签名说明
由于 XT 需要为第三方平台提供一些开放接口,因此需要考虑接口的数据安全问题,例如数据是否被篡改、数据是否过期、数据是否可重复提交,以及一定时间内接口的访问频率等。其中,数据是否被篡改最为重要。
-
线下分发 appkey 和 secretkey。针对不同的调用方,提供不同的 appkey 和 secretkey。
-
添加时间戳,该值应为发送请求时的 unix 时间戳(毫秒),根据此值计算数据的有效时间。
-
为所有数据添加签名信息。
-
添加 recvwindow,有效时间相对简单且固定为某个值。例如,在相同的 api 和 appid 下,数据在 10 分钟内有效。可以进一步优化,使每个 API 的有效时间不同。
服务器在收到请求时会判断时间戳。最多 60 秒,默认 5 秒。如果请求是在 5000 毫秒之前发送的,该请求将被视为无效。可以通过发送可选参数
recvWindow
来自定义此时间窗口值。此外,如果服务器计算出客户端时间戳比服务器时间_提前_超过一秒,服务器将拒绝该请求。由于互联网条件并非 100% 可靠,您的应用程序到 XT 服务器的本地延迟可能会出现抖动。这就是设置
recvWindow
的目的。不建议使用超过 5 秒的 recvWindow。
-
添加 algorithms(签名方法/算法)。用户的签名计算基于 HSC 协议,默认为 HmacSHA256。支持的算法:
- HmacMD5
- HmacSHA1
- HmacSHA224
- HmacSHA256(默认)
- HmacSHA384
- HmacSHA512
示例
名称 | 必填 | 示例 | 描述 |
---|---|---|---|
validate-appkey | 是 | dbefbc809e3e83c283a984c3a1459732ea7db1360ca80c5c2c8867408d28cc83 | |
validate-timestamp | 是 | 1641446237201 | |
validate-signature | 是 | 0a7d0b5e802eb5e52ac0cfcd6311b0faba6e2503a9a8d1e2364b38617877574d | |
validate-recvwindow | 否 | 5000(毫秒) | |
validate-algorithms | 否 | HmacSHA256 | HmacMD5、HmacSHA1、HmacSHA224、HmacSHA256、HmacSHA384、HmacSHA512,默认为 HmacSHA256 |
api-version | 否 | 1.0 | 保留字段,API 版本号 |
validate-signversion | 否 | 1.0 | 保留字段,签名版本号 |